package com.hyper_yang._05_juc.chap09;

/**
 * 可见性 volatile
 */
public class VolatileDemo {

    //volatile 作用之一：可以保证可见性
    private static volatile Integer flag = 1; //主内存  共享变量

    public static void main(String[] args) throws InterruptedException {

        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("我是子线程工作内存flag的值：" + flag); //从主内存拷贝一份放在本地内存中。
                while (flag == 1) { //另一个线程修改flag的值,当前线程是否可见？ volatile保证可见性
                }
                System.out.println("子线程操作结束..." + flag);
            }
        }).start();

        Thread.sleep(500);

        flag = 2; //主线程修改flag的值
        System.out.println("我是主线程工作内存flag的值：" + flag);
    }
}